home *** CD-ROM | disk | FTP | other *** search
- Procedure Rng_Init;
- Begin
- OUTPUT_DEVICE:= Pad('CON',4,RIGHT);
- LINES_PER_PAGE:= FStr(Valu('60'),3,0);
- End;
-
- Procedure Rng_Dsp;
- Begin
- Dsp_Fld(18,1,OUTPUT_DEVICE,_Ch,'4U',0,0,_AV,RW.WA[1]);
- Dsp_Fld(18,2,LINES_PER_PAGE,_Num,'3#',0,0,_AV,RW.WA[1]);
- IODEV := Strip(OUTPUT_DEVICE);
- PageLength := IVal(LINES_PER_PAGE);
- End;
-
- Procedure Rng_Edt;
- Var
- Abort,
- NoneEdited,
- Bypass,
- Edited,
- Finished,
- Fld_In_Range : Boolean;
- Last_Fld : Integer;
- EdtWin : WinPtr;
-
- Function SkipField(FNum : Integer) : Boolean;
- Var TB : Boolean;
- Begin
- TB := False;
- case FNum of
- 0 : begin end;
- end;
- SkipField := TB;
- End;
-
- Function Chk_Fld(ChkNum : Integer) : Boolean;
- Var
- EStr : String;
- Begin
- EStr := '';
- case ChkNum of
- 1 : if not(Choice('CON |PRN |LPT1|LPT2',OUTPUT_DEVICE)) then
- EStr := Choose('CON |PRN |LPT1|LPT2','',OUTPUT_DEVICE);
- 2 : if not(( Valu(LINES_PER_PAGE) >=6) and ( Valu(LINES_PER_PAGE) <= 100)) then
- EStr := 'Please enter a Page Length of between 6 and 100 Lines.';
- end; { case ChkNum }
- if (EStr <> '') then begin
- if (EStr <> LSC_BaseError) then begin
- Audible(Error);
- Message(RW.WA[1],EStr);
- end;
- Chk_Fld := False;
- end
- else Chk_Fld := True;
- End;
-
- Procedure Edt_N_Chk(x,y,l,a:Byte; H : WinPtr; Var Fld:String; Typ:Char; Pic:String; Fldno : Integer);
- Begin
- if Not(SkipField(FldNo)) then begin
- repeat
- if not Bypass then begin
- Edt_Fld(x,y,Fld,Typ,Pic,l,a,RW.WA[1]);
- NoneEdited := False;
- Edited := True;
- Abort := False;
- if (ExitCode = HlpKey) then DispHelp(h);
- if Custom_Key(1,1,Fldnum,ExitCode) then ExitCode := QitKey;
- end;
- if not(ExitCode in [QitKey,UArr,HlpKey]) then begin
- Fld_In_Range := Chk_Fld(Fldno);
- Dsp_Fld(x,y,Fld,Typ,Pic,0,l,a,RW.WA[1]);
- if not Fld_In_Range then begin
- FldNum := Fldno;
- Bypass := False;
- end;
- end;
- until Fld_In_Range or (ExitCode in [QitKey,UArr]);
- Message(Nil,'');
- end;
- End;
-
- Procedure OpenEdtMnu;
- Var TS : String;
- Begin
- TS := _EdtHelp;
- if OpenWin(0,ScrWid-Length(TS)+1,ScrHgt,Length(TS),1,$4F,$4F,0,#0'ø≥Ÿƒ¿≥⁄',TopCnt,'') then begin
- EdtWin := CurWin;
- WriteWXY(TS,0,1,1,EdtWin);
- HideWin(T_On,EdtWin);
- end
- else EdtWin := Nil;
- End;
-
- Begin
- OpenEdtMnu;
- Attrib := _AV;
- ExitCode := Nul;
- Abort := True;
- Bypass := False;
- FldNum := 1;
- Finished := False;
- repeat
- if FldNum = 1 then NoneEdited := True;
- if (Last_Fld = FldNum) and Not(Edited) then Inc(FldNum);
- Last_Fld := FldNum;
- Edited := False;
- case FldNum of
- 1 : Edt_N_Chk(18,1,0,0,Nil,OUTPUT_DEVICE,_Ch,'4U',1);
- 2 : Edt_N_Chk(18,2,0,0,Nil,LINES_PER_PAGE,_Num,'3#',2);
- 3 : begin
- IODEV := Strip(OUTPUT_DEVICE);
- end;
- 4 : begin
- PageLength := IVal(LINES_PER_PAGE);
- end;
- else if NoneEdited then begin
- Finished := true;
- if Abort then begin
- ExitCode := QitKey;
- DBErrM(_NoneEdited);
- end
- end
- else if ExitCode = XeptKey then Finished := True else FldNum := 0;
- end; { case Fldnum }
- if Bypass or not(Edited) then
- if _Upward and (FldNum > 1) then Dec(Fldnum) else Inc(Fldnum);
- if (ExitCode = XeptKey) then Bypass := True;
- if (ExitCode = QitKey) then Finished := True;
- if FldNum > Last_Fld then _Upward := False;
- until Finished;
- if EdtWin <> Nil then CloseWin(EdtWin);
- End;
-